home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / cpu / m6809 / m6809.h < prev   
C/C++ Source or Header  |  2000-05-18  |  5KB  |  126 lines

  1. /*** m6809: Portable 6809 emulator ******************************************/
  2.  
  3. #ifndef _M6809_H
  4. #define _M6809_H
  5.  
  6. #include "memory.h"
  7. #include "osd_cpu.h"
  8.  
  9. enum {
  10.     M6809_PC=1, M6809_S, M6809_CC ,M6809_A, M6809_B, M6809_U, M6809_X, M6809_Y,
  11.     M6809_DP, M6809_NMI_STATE, M6809_IRQ_STATE, M6809_FIRQ_STATE };
  12.  
  13. #define M6809_INT_NONE  0   /* No interrupt required */
  14. #define M6809_INT_IRQ    1    /* Standard IRQ interrupt */
  15. #define M6809_INT_FIRQ    2    /* Fast IRQ */
  16. #define M6809_INT_NMI    4    /* NMI */    /* NS 970909 */
  17. #define M6809_IRQ_LINE    0    /* IRQ line number */
  18. #define M6809_FIRQ_LINE 1   /* FIRQ line number */
  19.  
  20. /* PUBLIC GLOBALS */
  21. extern int  m6809_ICount;
  22.  
  23.  
  24. /* PUBLIC FUNCTIONS */
  25. extern void m6809_reset(void *param);
  26. extern void m6809_exit(void);
  27. extern int m6809_execute(int cycles);  /* NS 970908 */
  28. extern unsigned m6809_get_context(void *dst);
  29. extern void m6809_set_context(void *src);
  30. extern unsigned m6809_get_pc(void);
  31. extern void m6809_set_pc(unsigned val);
  32. extern unsigned m6809_get_sp(void);
  33. extern void m6809_set_sp(unsigned val);
  34. extern unsigned m6809_get_reg(int regnum);
  35. extern void m6809_set_reg(int regnum, unsigned val);
  36. extern void m6809_set_nmi_line(int state);
  37. extern void m6809_set_irq_line(int irqline, int state);
  38. extern void m6809_set_irq_callback(int (*callback)(int irqline));
  39. extern void m6809_state_save(void *file);
  40. extern void m6809_state_load(void *file);
  41. extern const char *m6809_info(void *context,int regnum);
  42. extern unsigned m6809_dasm(char *buffer, unsigned pc);
  43.  
  44. /****************************************************************************/
  45. /* For now the 6309 is using the functions of the 6809                        */
  46. /****************************************************************************/
  47. #if (HAS_HD6309)
  48. #define M6309_A                 M6809_A
  49. #define M6309_B                 M6809_B
  50. #define M6309_PC                M6809_PC
  51. #define M6309_S                 M6809_S
  52. #define M6309_U                 M6809_U
  53. #define M6309_X                 M6809_X
  54. #define M6309_Y                 M6809_Y
  55. #define M6309_CC                M6809_CC
  56. #define M6309_DP                M6809_DP
  57. #define M6309_NMI_STATE         M6809_NMI_STATE
  58. #define M6309_IRQ_STATE         M6809_IRQ_STATE
  59. #define M6309_FIRQ_STATE        M6809_FIRQ_STATE
  60.  
  61. #define HD6309_INT_NONE                    M6809_INT_NONE
  62. #define HD6309_INT_IRQ                    M6809_INT_IRQ
  63. #define HD6309_INT_FIRQ                    M6809_INT_FIRQ
  64. #define HD6309_INT_NMI                    M6809_INT_NMI
  65. #define M6309_IRQ_LINE                    M6809_IRQ_LINE
  66. #define M6309_FIRQ_LINE                 M6809_FIRQ_LINE
  67.  
  68. #define hd6309_ICount                     m6809_ICount
  69. extern void hd6309_reset(void *param);
  70. extern void hd6309_exit(void);
  71. extern int hd6309_execute(int cycles);    /* NS 970908 */
  72. extern unsigned hd6309_get_context(void *dst);
  73. extern void hd6309_set_context(void *src);
  74. extern unsigned hd6309_get_pc(void);
  75. extern void hd6309_set_pc(unsigned val);
  76. extern unsigned hd6309_get_sp(void);
  77. extern void hd6309_set_sp(unsigned val);
  78. extern unsigned hd6309_get_reg(int regnum);
  79. extern void hd6309_set_reg(int regnum, unsigned val);
  80. extern void hd6309_set_nmi_line(int state);
  81. extern void hd6309_set_irq_line(int irqline, int state);
  82. extern void hd6309_set_irq_callback(int (*callback)(int irqline));
  83. extern void hd6309_state_save(void *file);
  84. extern void hd6309_state_load(void *file);
  85. extern const char *hd6309_info(void *context,int regnum);
  86. extern unsigned hd6309_dasm(char *buffer, unsigned pc);
  87. #endif
  88.  
  89. /****************************************************************************/
  90. /* Read a byte from given memory location                                    */
  91. /****************************************************************************/
  92. /* ASG 971005 -- changed to cpu_readmem16/cpu_writemem16 */
  93. #define M6809_RDMEM(Addr) ((unsigned)cpu_readmem16(Addr))
  94.  
  95. /****************************************************************************/
  96. /* Write a byte to given memory location                                    */
  97. /****************************************************************************/
  98. #define M6809_WRMEM(Addr,Value) (cpu_writemem16(Addr,Value))
  99.  
  100. /****************************************************************************/
  101. /* Z80_RDOP() is identical to Z80_RDMEM() except it is used for reading     */
  102. /* opcodes. In case of system with memory mapped I/O, this function can be  */
  103. /* used to greatly speed up emulation                                       */
  104. /****************************************************************************/
  105. #define M6809_RDOP(Addr) ((unsigned)cpu_readop(Addr))
  106.  
  107. /****************************************************************************/
  108. /* Z80_RDOP_ARG() is identical to Z80_RDOP() except it is used for reading  */
  109. /* opcode arguments. This difference can be used to support systems that    */
  110. /* use different encoding mechanisms for opcodes and opcode arguments       */
  111. /****************************************************************************/
  112. #define M6809_RDOP_ARG(Addr) ((unsigned)cpu_readop_arg(Addr))
  113.  
  114. #ifndef FALSE
  115. #    define FALSE 0
  116. #endif
  117. #ifndef TRUE
  118. #    define TRUE (!FALSE)
  119. #endif
  120.  
  121. #ifdef MAME_DEBUG
  122. extern unsigned Dasm6809 (char *buffer, unsigned pc);
  123. #endif
  124.  
  125. #endif /* _M6809_H */
  126.